﻿// Copyright (c) Microsoft Corporation.  All rights reserved.
//
// Module Name:
//
//  MockInspector.cs
//    
// Abstract:
//
//  Implements Microsoft.Office.Interop.Outlook.Inspectors 
//  and Microsoft.Office.Interop.Outlook.Inspector interfaces 
//  for unit testing
//  
//--


using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using Microsoft.Office.Interop.Outlook;

namespace Microsoft.EnhancedReminders.OutlookAddIn.UnitTests
{
    /// <summary>
    /// Implements Microsoft.Office.Interop.Outlook.Inspectors interface for unit testing
    /// </summary>
    [SuppressMessage("Microsoft.Design", "CA1010:CollectionsShouldImplementGenericInterface",
    Justification = "Mock object implementing Outlook interface")]
    [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix",
    Justification = "Mock object implementing Outlook interface")]
    public sealed class MockInspectors : Inspectors
    {
        #region _Inspectors Members

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        Inspector _Inspectors.Add(object Item)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        Application _Inspectors.Application
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        OlObjectClass _Inspectors.Class
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        int _Inspectors.Count
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspectors.Parent
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        NameSpace _Inspectors.Session
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        Inspector _Inspectors.this[object Index]
        {
            get { throw new System.NotImplementedException(); }
        }

        #endregion

        #region IEnumerable Members

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            throw new System.NotImplementedException();
        }

        #endregion

        #region InspectorsEvents_Event Members

        event InspectorsEvents_NewInspectorEventHandler InspectorsEvents_Event.NewInspector
        {
            add {  }
            remove {  }
        }

        #endregion
    }

    /// <summary>
    /// Implements Microsoft.Office.Interop.Outlook.Inspector interface for unit testing
    /// </summary>
    public sealed class MockInspector : Inspector, InspectorEvents_Event
    {
        private AppointmentItem _appointmentItem;

        /// <summary>
        /// Overloaded constructor that takes an AppointmentItem 
        /// </summary>
        /// <param name="appointmentItem"></param>
        public MockInspector(AppointmentItem appointmentItem)
        {
            Debug.Assert(appointmentItem != null, "appointment != null");
            _appointmentItem = appointmentItem;
        }

        #region _Inspector Members

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.Activate()
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        Application _Inspector.Application
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        string _Inspector.Caption
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        OlObjectClass _Inspector.Class
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.Close(OlInspectorClose SaveMode)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        Microsoft.Office.Core.CommandBars _Inspector.CommandBars
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.CurrentItem
        {
            get { return _appointmentItem; }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.Display(object Modal)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        OlEditorType _Inspector.EditorType
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.HTMLEditor
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        int _Inspector.Height
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
                throw new System.NotImplementedException();
            }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.HideFormPage(string PageName)
        {
            throw new System.NotImplementedException();
        }

        bool _Inspector.IsWordMail()
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        int _Inspector.Left
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
                throw new System.NotImplementedException();
            }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.ModifiedFormPages
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.NewFormRegion()
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.OpenFormRegion(string Path)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.Parent
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.SaveFormRegion(object Page, string FileName)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        NameSpace _Inspector.Session
        {
            get { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.SetControlItemProperty(object Control, string PropertyName)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.SetCurrentFormPage(string PageName)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        void _Inspector.ShowFormPage(string PageName)
        {
            throw new System.NotImplementedException();
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        int _Inspector.Top
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
                throw new System.NotImplementedException();
            }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        int _Inspector.Width
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
                throw new System.NotImplementedException();
            }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        OlWindowState _Inspector.WindowState
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
                throw new System.NotImplementedException();
            }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        object _Inspector.WordEditor
        {
            get { throw new System.NotImplementedException(); }
        }

        #endregion

        #region InspectorEvents_10_Event Members


        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_ActivateEventHandler InspectorEvents_10_Event.Activate
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_BeforeMaximizeEventHandler InspectorEvents_10_Event.BeforeMaximize
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_BeforeMinimizeEventHandler InspectorEvents_10_Event.BeforeMinimize
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_BeforeMoveEventHandler InspectorEvents_10_Event.BeforeMove
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_BeforeSizeEventHandler InspectorEvents_10_Event.BeforeSize
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_CloseEventHandler InspectorEvents_10_Event.Close
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_DeactivateEventHandler InspectorEvents_10_Event.Deactivate
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        [SuppressMessage("Microsoft.Design", "CA1065:DoNotRaiseExceptionsInUnexpectedLocations",
    Justification = "Properties not implemented in Mock object")]
        event InspectorEvents_10_PageChangeEventHandler InspectorEvents_10_Event.PageChange
        {
            add { throw new System.NotImplementedException(); }
            remove { throw new System.NotImplementedException(); }
        }

        #endregion

        #region InspectorEvents_Event Members

        event InspectorEvents_ActivateEventHandler InspectorEvents_Event.Activate
        {
            add {  }
            remove {  }
        }

        event InspectorEvents_CloseEventHandler InspectorEvents_Event.Close
        {
            add {  }
            remove {  }
        }

        event InspectorEvents_DeactivateEventHandler InspectorEvents_Event.Deactivate
        {
            add {  }
            remove {  }
        }

        #endregion
    }
}